//package cn.mes.module.mes.utils;
//
//import cn.mes.framework.common.util.object.BeanUtils;
//import cn.mes.module.mes.controller.admin.devicedata.vo.DeviceDataReqVo;
//import cn.mes.module.mes.controller.admin.devicedata.vo.DeviceDataRespVO;
//import cn.mes.module.mes.controller.admin.devicedata.vo.DeviceDataSaveReqVO;
//import cn.mes.module.mes.controller.admin.devicedata.vo.apiresponslist.Datum;
//import cn.mes.module.mes.controller.admin.devicedata.vo.apiresponslist.JSONParam;
//import cn.mes.module.mes.controller.admin.machine.vo.MachineSaveReqVO;
//import cn.mes.module.mes.controller.admin.devicedata.vo.apiresponslist.ApiResponseList;
//import cn.mes.module.mes.controller.admin.machine.vo.MachineSimpleRespVO;
//import cn.mes.module.mes.dal.dataobject.devicedata.DeviceDataDO;
//import cn.mes.module.mes.dal.dataobject.machine.MachineDO;
//import cn.mes.module.mes.dal.dataobject.productrecord.ProductRecordDO;
//import cn.mes.module.mes.dal.mysql.devicedata.DeviceDataMapper;
//import cn.mes.module.mes.enums.DataEnum;
//import cn.mes.module.mes.service.devicedata.DeviceDataService;
//import cn.mes.module.mes.service.machine.MachineService;
//import cn.mes.module.mes.service.productrecord.ProductRecordService;
//import com.alibaba.fastjson.JSONObject;
//import lombok.extern.log4j.Log4j2;
//import org.apache.commons.collections4.CollectionUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.http.ResponseEntity;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//import org.springframework.web.client.RestTemplate;
//
//import java.time.LocalDateTime;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * Title: <br>
// * Description: <br>
// * Copyright: Copyright (c) 2024<br>
// * Company: 四川瀚海精密制造有限公司<br>
// *
// * @author youchuang
// * @version 1.0
// * @date 2024-08-13 10:29
// */
//@Component
//@Log4j2
//public class AutoGetDataUtils1 {
//
//    @Autowired
//    MachineService machineService;
//
//    @Autowired
//    DeviceDataService deviceDataService;
//
//    @Autowired
//    ProductRecordService productRecordService;
//
//    public String getSid() {
//        String username = "schanhai";
//        String password = "Hh123456.";
//        RestTemplate restTemplate = new RestTemplate();
//        String baseUrl = "https://api.123321yun.com/api/user/login/?username=%s&password=%s";
//        String url = String.format(baseUrl, username, password);
//        HttpHeaders headers = new HttpHeaders();
//        MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");
//        headers.setContentType(type);
//        HttpEntity httpEntity = new HttpEntity<>(headers);
//        ResponseEntity<Object> responseEntity = restTemplate.postForEntity(url, httpEntity, Object.class);
//        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(responseEntity.getBody());
//        String sid = jsonObject.getString("data");
//        return sid;
//    }
//
//
//    /**
//     * 获取所有设备数据
//     */
//    @Scheduled(cron = "0 0/1 * * * ?")
//    public void getData(){
//        List<MachineDO> machineDOList=machineService.getMachineAreaIdList(new MachineSaveReqVO());
//        log.info("Ma:{}",machineDOList);
//        if(CollectionUtils.isEmpty(machineDOList)){
//            return;
//        }
//        machineDOList.forEach(item->{
//            this.getDataDetailByRegionId(item.getRegionId());
//        });
//
//    }
//
//    /**
//     *
//     *根据区域ID获取该区域的所有数据
//     * @param regionId 区域ID
//     */
//    public void getDataDetailByRegionId(String regionId){
//        String sid = this.getSid();
//        System.out.println("Sid:" + sid);
//        RestTemplate restTemplate = new RestTemplate();
//        String url = "https://api.123321yun.com/api/device/queryRegionDeviceParamStatus?regionId="+regionId;
//        HttpHeaders headers = new HttpHeaders();
//        MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");
//        headers.setContentType(type);
//        headers.set("__sid", sid);
//        HttpEntity httpEntity = new HttpEntity<>(headers);
//        ResponseEntity<ApiResponseList> responseEntity = restTemplate.postForEntity(url, httpEntity, ApiResponseList.class);
//        ApiResponseList apiResponse = responseEntity.getBody();
//        if(apiResponse ==null){
//            return;
//        }
//        if(apiResponse.getCode()==200){
//           List<Datum> datumList= apiResponse.getData();
//            for (Datum datum : datumList) {
//                List<JSONParam> jsonParamList=datum.getJsonParams();
//
//                JSONParam  moldNumParam=jsonParamList.stream().filter(item->(item.getFlag().equals(DataEnum.MOLD_NUM_FLAG.getCode())||item.getFlag().equals(DataEnum.MOLD_NUM_FLAG1.getCode()))).findFirst().orElse(null);
//                if(moldNumParam!=null){
//                    datum.setMoldNum(moldNumParam.getRealValue());
//                }
//                JSONParam shiftNumParam=jsonParamList.stream().filter(item->(item.getFlag().equals(DataEnum.SHIFT_NUM_FLAG.getCode())||item.getFlag().equals(DataEnum.SHIFT_NUM_FLAG1.getCode()))).findFirst().orElse(null);
//                if(shiftNumParam!=null){
//                    datum.setShiftNum(shiftNumParam.getRealValue());
//                }
//                JSONParam cycleParam=jsonParamList.stream()
//                        .filter(item->(item.getFlag()
//                                .equals(DataEnum.CYCLE_FLAG.getCode())||item.getFlag().equals(DataEnum.CYCLE_FLAG1.getCode()))).findFirst().orElse(null);
//                if(cycleParam!=null){
//                    log.info("Param:{}",JSONObject.toJSONString(cycleParam));
//                    datum.setActualCycle((double) cycleParam.getRealValue());
//                }
//                String[] strings=datum.getDeviceName().split("#");
//                if(strings.length==2){
//                    datum.setMachineName(strings[1]);
//
//                }
//
//            }
//            List<DeviceDataSaveReqVO> deviceDataDOList= BeanUtils.toBean(apiResponse.getData(), DeviceDataSaveReqVO.class);
//
//            boolean result=this.deviceDataService.createDeviceDataBatch(deviceDataDOList);
//            if(result){
//                refreshProductRecord();
//            }
//            log.info("APi:{}",deviceDataDOList);
//        }
//    }
//
//    public void refreshProductRecord(){
//        List<ProductRecordDO> productRecordDOList=productRecordService.listProductRecords(null);
//        if(CollectionUtils.isEmpty(productRecordDOList)){
//            return;
//        }
//        List<String> machineNameList=productRecordDOList.stream().map(ProductRecordDO::getMachineName).collect(Collectors.toList());
//        for(ProductRecordDO productRecordDO:productRecordDOList){
//            LocalDateTime startTime=productRecordDO.getActualStartTime();
//            LocalDateTime endTime=LocalDateTime.now();
//            if(productRecordDO.getActualEndTime()!=null){
//                endTime=productRecordDO.getActualEndTime();
//            }
//            DeviceDataReqVo deviceDataReqVo=new DeviceDataReqVo();
//            deviceDataReqVo.setMachineName(productRecordDO.getMachineName());
//            LocalDateTime[] createTime = new LocalDateTime[2];
//            createTime[0]=startTime;
//            createTime[1]=endTime;
//            deviceDataReqVo.setCreateTime(createTime);
//            DeviceDataDO deviceDataDO=deviceDataService.getDeviceDataByDeviceInfo(deviceDataReqVo);
//            log.info("DeviceDo:{}",JSONObject.toJSONString(deviceDataDO));
//            if(deviceDataDO!=null){
//                productRecordDO.setTotalNum(deviceDataDO.getMoldNum());
//            }
//        }
//        productRecordService.updateProductRecordBatch(productRecordDOList);
////        List<DeviceDataDO> deviceDataDOList=
//    }
//
//}
